# 统计指定目录大小
# 第一周作业2)
# 班级：Python五期
# 学员：李子坚

import os

# 定义一个统计指定目录大小的函数
def stat_dir_size(dir_path):
    '''
    统计目录大小函数
    '''
    #获取被复制目录中的所有文件信息
    dir_list = os.listdir(dir_path)
    dir_size = 0
    
    #遍历所有文件，并对文件大小进行累加
    for file_name in dir_list:
        
        #为遍历的文件添加目录路径
        file_path = os.path.join(dir_path, file_name)
        
        #判断是否是文件
        if os.path.isfile(file_path):
            #获取文件大小并累加
            file_size = os.path.getsize(file_path)
            dir_size += file_size
            
        #判断是否是目录
        if os.path.isdir(file_path):
            #递归调用自己，统计子目录大小并累加
            dir_size += stat_dir_size(file_path)

    return dir_size


directory_path = input("请输入需统计大小的目录路径：")

#判断是否是目录
if os.path.isdir(directory_path):

    #统计目录大小
    directory_size = stat_dir_size(directory_path)

    if directory_size < 1024:           #目录大小<1KB
        print("目录{}大小为：{:,}字节".format("'"+directory_path+"'", directory_size))
    elif directory_size < 1024**2:      #目录大小<1MB
        print("目录{}大小为：{:.1f}KB({:,}字节)".format("'"+directory_path+"'", directory_size/1024, directory_size))
    elif directory_size < 1024**3:      #目录大小<1GB
        print("目录{}大小为：{:.1f}MB({:,}字节)".format("'"+directory_path+"'", directory_size/1024**2, directory_size))
    else:
        print("目录{}大小为：{:.1f}GB({:,}字节)".format("'"+directory_path+"'", directory_size/1024**3, directory_size))
else:
    print("警告：对不起，您输入的目录路径有误！")

